package com.augurit.common.util;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springside.modules.orm.Page;

/**
 * 分页工具方法
 */
public class PageUtils {
	
	/**
	 * 复制源分页对象的分页参数数据并构造新的分页对象
	 * @param source 源分页对象
	 * @return 与源分页对象分页参数数据一致的新分页对象
	 */
	public static Page newPageInstance(Page source){
		if(source != null){
			Page destination = new Page();
			copyParameters(source, destination);
			return destination;
		}else
			return null;
	}
	
	/**
	 * 复制源分页对象的分页参数数据和结果集到目标分页对象
	 * @param source 源分页对象
	 * @param result 结果集
	 * @param destination 目标分页对象
	 */
	public static void copy(Page source, List result, Page destination){
		copyParameters(source, destination);

		if(result != null && result.size() > 0)
			destination.setResult(result);
	}
	
	/**
	 * 拷贝源分页对象分页参数数据至目标分页对象
	 * 注意：该方法不拷贝结果集属性
	 * @param source 源分页对象
	 * @param destination 目标分页对象
	 */
	public static void copyParameters(Page source, Page destination){
		if(source != null && destination != null){
			destination.setPageNo(source.getPageNo());
			destination.setPageSize(source.getPageSize());
			destination.setOrderBy(source.getOrderBy());
			destination.setAutoCount(source.isAutoCount());
			destination.setTotalCount(source.getTotalCount());
			
			if(StringUtils.isNotBlank(source.getOrder()))
				destination.setOrder(source.getOrder());
		}
	}
}
